export default {
  // 开启命名空间
  namespaced: true,
  // state数据
  state: () => ({
    // 读取本地缓存中的收货地址,初始化address
    address: JSON.parse(uni.getStorageSync('address') || '{}'),
    // 存储登录用户信息的字符串
    token: uni.getStorageSync('token') || '',
    // 用户的基本信息
    userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'),
    // 重定向 object{opentype ， from}
    redirectInfo: null
  }),
  // 方法
  mutations: {
    // 更新收货地址
    updateAddress(state , address){
      //保存收货地址
      state.address = address
      // 调用saveAddressToStorage方法保存到本地中
      this.commit('m_user/saveAddressToStorage')
    },
    // 将地址保存到本地缓存中
    saveAddressToStorage(state){
      // 调用uni.setStorageSync
      uni.setStorageSync('address' , JSON.stringify(state.address))
    },
    // 更新用户信息
    updateUserInfo(state , userinfo){
      // 更新 state 中的 userinfo 的信息
      state.userinfo = userinfo
      // 通过 this.commit()方法 调用 user 中的 saveUserInfoToStorage 方法保存到本地缓存中
      this.commit('m_user/saveUserInfoToStorage')
    },
    // 将用户信息保存到本地缓存中
    saveUserInfoToStorage(state){
      uni.setStorageSync('userinfo' , JSON.stringify(state.userinfo))
    },
    // 更新 token 字符串
    updateToken(state , token){
      state.token = token
      // 调用 this.commit() 方法，将 token 保存到本地
      this.commit('m_user/saveTokenToStorage')
    },
    // 将 token 持久化保存到本地
    saveTokenToStorage(state){
      uni.setStorageSync('token' , state.token)
    },
    // 更新重定向信息对象
    updateRedirectInfo(state , info){
      state.redirectInfo = info
    }
  },
  // 数据包装器
  getters: {
    // 收货详细地址
    addstr(state){
      // 判断address地址是否为空，空返回一个空，不是空的进行地址拼接
      if(!state.address.provinceName) return ''
      // 拼接 省，市，区，详细地址 的字符串并返回给用户，addstr就是详细地址
      return state.address.provinceName + state.address.cityName + state.address.countyName + state.address.detailInfo
    }
  }
}